package cn.bobohost.market.web.controller;

import cn.bobohost.market.pojo.User;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

/**
 * 用户的Controller
 */
@RestController
public class UserController {


    /**
     * 保存一个用户
     * Post请求的数据，要放到http的请求体里面，不是请求参数上的。
     * 服务端必须加@RequestBody这个注解才能接受。
     *
     * @param user 用户对象
     * @return 提示结果
     */
    @PostMapping("/user")
    public String add(@RequestBody User user){
        //服务端控制台打印
        System.out.println(user);
        //返回结果给客户端
        return "保存成功！";
    }

    /**
     *
     *
     * /user/{id}:代表，你请求的路径资源必须制定是哪个一个id的用户
     * 将来客户端请求的时候：/user/1
     * @param user 用来封装数据的消息体
     * @param id 用户的唯一编号
     * @return
     */
    @PutMapping("/user/{id}")
    public String update(@RequestBody User user,@PathVariable Integer id){
        //服务端控制台打印
        System.out.println(user);
        //返回结果给客户端
        return "修改成功！";
    }

    /**
     * 删除
     * 客户端：/user/1
     * @param id
     * @return
     */
    @DeleteMapping("/user/{id}")
    public String remove(@PathVariable Integer id){
        System.out.println(id);
        //返回结果给客户端
        return "删除成功！";
    }

    /**
     * 查询所有的用户列表
     * @return
     */
    @GetMapping("/user")
    public List<User> list(){
        List<User> userList =new ArrayList<>();
        //添加元素---自己模拟两个用户
        User user1 =new User();
        user1.setId(1);
        user1.setUserName("Rose");
        user1.setAge(18);

        User user2 =new User();
        user2.setId(2);
        user2.setUserName("Jack");
        user2.setAge(88);

        //将用户添加到列表
        userList.add(user1);
        userList.add(user2);


        //返回列表
        return userList;
    }


    /**
     * 根据id查询一个用户
     * @param id
     * @return
     */
    @GetMapping("/user/{id}")
    public User getById(@PathVariable Integer id){
        System.out.println(id);

        User user1 =new User();
        user1.setId(id);
        user1.setUserName("Rose");
        user1.setAge(18);

        return user1;
    }


    /**
     * 查询参数示例
     * @param id
     * @return
     */
    @GetMapping("/user/query")
//    public User getById2(Integer id){
    public User getById2(@RequestParam("id") Integer id){
        System.out.println(id);

        User user1 =new User();
        user1.setId(id);
        user1.setUserName("Rose");
        user1.setAge(18);

        return user1;
    }


}
